A packet of information generated by a source, such as a client computer or virtual machine, comprises a source address, a destination address, and a packet type. Depending upon the type of the packet, it is preferable to process the packet with a plurality of packet processing “services” before sending the packet to its destination. For example, an IP packet generated by a client and to be sent to a destination website may be routed first to a firewall, then a WAN optimizer, before forwarding the packet to the destination website. Determining the ordered sequence of services and managing the processing of a packet in accordance with the ordered sequence is known as “service slotting or chaining.”
Current methods of service chaining encapsulate a native packet type, such as an IP packet, inside a non-standard, proprietary, vendor-specific packet, thus requiring proprietary hardware and/or software to implement service chaining. Such a method may include inserting the entire service chain into the metadata portion of the proprietary packet. In a virtual computing environment, service chaining becomes even more complex because a service can be either a physical network service, such as a stand-alone appliance, or a virtual network service within the virtual computing system.